AWS ALB + CloudWatchメトリクスで簡単に可用性を算出する
AWS上でサービスを運営する場合、当然ALB (Application Load Balancer)を利用するわけだけど、ALBにはデフォルトでCloudWatchのメトリクスを計測してくれている機能が存在する
CloudWatchのメトリクスを利用することで、簡単に可用性を算出することができる
算出法は前述の記事と基本的には同じなのだが、少し算出式が異なる
ALBのCloudWatchには、RequestCountとHTTPCode_Target_5XX_Countというメトリクスが存在する
これらはそれぞれ
RequestCount: ALBがリクエストを処理した数
HTTPCode_Target_5XX_Count: ALBターゲットが5xxエラーを返した数
なのだが、ここにもう一つ必要なメトリクスが出てくるそれがHTTPCode_ELB_5XX_Countである
ELB5xxカウントが何かと言うと、公式のドキュメントによればELBが5xxを返した数である これはリクエストがターゲットにproxyされずにロードバランサーの段階でエラーが返されたということである
例えば、ターゲットグループに正常なターゲットが存在しなくなった場合に起こる
その場合は504とか
通常、ターゲットグループに正常なターゲットが存在する場合このエラーは起こりえないはずなのだが、ごく低い割合で起こるのでALB自体の何らかのエラーだと思っていていい
本当に低い割合なので、可用性から無視してもいいと思う
のだが、より正確なALB経由のサービスの可用性を算出する場合は、以下の式を使う
$ Availability = \frac{RequestCount}{RequestCount + HTTPCode\_ELB\_5XX\_Count + HTTPCode\_Target\_5XX\_Count}
RequestCount=0, ELB5xxCount=0, Target_5xx_Count=0の場合はN/A
算出式が間違っていた気がするkeroxp.icon2018/10/31
elb_5xx,tgt_5xxともに分母に入れないとおかしい気がする
分母がRequestCountでないのは、どうやらALBのRequestCountにはELB5xxCountが含まれないらしいからである